home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Champak 26 (Anniversary Edition)
/
Volume 26 [Anniversary Edition] - JOGO DISK .iso
/
Puzzle
/
ClickNslide.swf
/
scripts
/
DefineSprite_249
/
frame_2
/
DoAction.as
Wrap
Text File
|
2001-07-14
|
5KB
|
250 lines
function buildPuzzle()
{
blockcount = 0;
var startx = 0;
var starty = 0;
blocksize = 300 / puzzlesize;
y = 0;
while(y < puzzlesize)
{
x = 0;
while(x < puzzlesize)
{
newname = "block" + y + x;
duplicateMovieClip("block",newname,16384 + ++block_count);
this[newname]._x = startx + blocksize * x;
this[newname]._y = starty + blocksize * y;
this[newname].x = x;
this[newname].y = y;
this[newname].photo.gotoAndStop(_parent.preview._currentframe);
this[newname].photo._x = blocksize * x * -1;
this[newname].photo._y = blocksize * y * -1;
this[newname].gotoAndStop(puzzlesize - 2);
x++;
}
y++;
}
this[newname]._alpha = 0;
this[newname]._visible = false;
blankblock = newname;
}
function checkPuzzle()
{
wrong = 0;
y = 0;
while(y < puzzlesize)
{
x = 0;
while(x < puzzlesize)
{
if(puzzlearray[y][x] != "block" + y + x)
{
wrong++;
}
x++;
}
y++;
}
_parent.percentcompleted = Math.round(100 * ((puzzlesize * puzzlesize - wrong) / (puzzlesize * puzzlesize))) + "%";
if(0 < wrong)
{
return false;
}
return true;
}
function reset()
{
y = 0;
while(y < puzzlesize)
{
x = 0;
while(x < puzzlesize)
{
this["block" + y + x].removeMovieClip();
x++;
}
y++;
}
_parent.movecount = 0;
_parent.percentcompleted = "";
}
function slide(b)
{
if(solved == true)
{
return undefined;
}
if(this[b].motion == true)
{
return undefined;
}
if(b == blankblock)
{
return undefined;
}
var cx = this[b].x;
var cy = this[b].y;
var bx = this[blankblock].x;
var by = this[blankblock].y;
if(cx == bx)
{
if(by < cy)
{
swapBlocks(0,1,b);
}
else if(cy < by)
{
swapBlocks(0,-1,b);
}
}
else
{
if(cy != by)
{
return undefined;
}
if(bx < cx)
{
swapBlocks(1,0,b);
}
else if(cx < bx)
{
swapBlocks(-1,0,b);
}
}
_parent.movecount = _parent.movecount + 1;
if(checkPuzzle())
{
this[blankblock].reveal = true;
solved = true;
RevealPicture();
_parent.sounds.gotoAndPlay("win");
}
}
function RevealPicture()
{
y = 0;
while(y < puzzlesize)
{
x = 0;
while(x < puzzlesize)
{
this["block" + y + x].outline.gotoAndPlay("fade");
x++;
}
y++;
}
}
function swapBlocks(x, y, b)
{
var bx = this[blankblock].x;
var by = this[blankblock].y;
var swapblock = puzzlearray[by + y][bx + x];
var tempx = this[blankblock]._x;
var tempy = this[blankblock]._y;
this[blankblock]._x = this[swapblock]._x;
this[blankblock]._y = this[swapblock]._y;
this[swapblock].newx = tempx;
this[swapblock].newy = tempy;
this[swapblock].x = bx;
this[swapblock].y = by;
this[swapblock].motion = true;
this[swapblock].mx = x;
this[swapblock].my = y;
this[blankblock].x = bx + x;
this[blankblock].y = by + y;
puzzlearray[by][bx] = swapblock;
puzzlearray[by + y][bx + x] = blankblock;
if(swapblock != b)
{
swapBlocks(x,y,b);
}
}
function shuffle()
{
shufflecomplete = false;
j = 0;
while(500 >= j)
{
bx = this[blankblock].x;
by = this[blankblock].y;
do
{
xory = random(2);
if(xory == 0)
{
rx = bx;
ry = random(2);
if(ry == 0)
{
ry = by - 1;
}
else
{
ry = by + 1;
}
}
else
{
ry = by;
rx = random(2);
if(rx == 0)
{
rx = bx - 1;
}
else
{
rx = bx + 1;
}
}
}
while(rx >= puzzlesize or rx < 0 or ry < 0 or ry >= puzzlesize);
swapblock = puzzlearray[ry][rx];
puzzlearray[ry][rx] = blankblock;
this[blankblock].x = rx;
this[blankblock].y = ry;
puzzlearray[by][bx] = swapblock;
this[swapblock].x = bx;
this[swapblock].y = by;
j++;
}
shufflecomplete = true;
y = 0;
while(y < puzzlesize)
{
x = 0;
while(x < puzzlesize)
{
this[puzzlearray[y][x]]._x = blocksize * x;
this[puzzlearray[y][x]]._y = blocksize * y;
x++;
}
y++;
}
checkPuzzle();
solved = false;
_parent.timerclip.startTime = getTimer();
_parent.timerclip.seconds = 0;
_parent.timerclip.minutes = 0;
}
function BuildArray()
{
puzzlearray = new Array();
y = 0;
while(y < puzzlesize)
{
puzzlearray[y] = new Array();
x = 0;
while(x < puzzlesize)
{
thisblock = "block" + y + x;
tx = this[thisblock].x;
ty = this[thisblock].y;
puzzlearray[ty][tx] = this[thisblock]._name;
x++;
}
y++;
}
}